package testes;


import logica.pessoa.Pessoa;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import util.Endereco;
import util.TipoDeLogradouro;
import util.UF;


public class TestaPessoa {
	private Pessoa umaPessoa;
	
	@Before public void criaPessoa() {
		umaPessoa = new Pessoa();
	}
	
	@Test public void testaExcessaoNome(){
	
		try{
			umaPessoa.setNome(null);  
			Assert.fail();
		
		} catch (Exception e) {
			Assert.assertEquals("\n\t<Nome invalido!>", e.getMessage());
		}
		
		try{
			umaPessoa.setNome("");  
			Assert.fail();
		
		} catch (Exception e) {
			Assert.assertEquals("\n\t<Nome invalido!>", e.getMessage());
		}
		
		try{
			umaPessoa.setNome("p e q u e n o");  //testando nome menor que 8 
			Assert.fail();
		
		} catch (Exception e) {
			Assert.assertEquals("\n\t<Nome invalido!>", e.getMessage());
		}
		
		try{
			umaPessoa.setNome("nome que contem numero 3");  
			Assert.fail();
		
		} catch (Exception e) {
			Assert.assertEquals("\n\t<Nome invalido!>", e.getMessage());
		}
		
	}
	
	@Test public void testaExcessaoTelefone(){
		
		try {
			umaPessoa.setTelefone(null);  
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Telefone invalido!>", e.getMessage());
		}
		
		try {
			umaPessoa.setTelefone("");  
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Telefone invalido!>", e.getMessage());
		}
		
		try {
			umaPessoa.setTelefone("(10) 99345678");     // ddd naum existe
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Telefone invalido!>", e.getMessage());
		}
		
		try {
			umaPessoa.setTelefone("(87) 993456-78");     // telefone formato invalido
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Telefone invalido!>", e.getMessage());
		}
		
		try {
			umaPessoa.setTelefone("(87) 99348a78");     // telefone comtem letra
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Telefone invalido!>", e.getMessage());
		}	
	}
	
	
	@Test public void testaExcessaoEmail(){

		try {
			umaPessoa.setEmail(null);     
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Email invalido!>", e.getMessage());
		}
		
		try {
			umaPessoa.setEmail("");     
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Email invalido!>", e.getMessage());
		}
	
		try {
			umaPessoa.setEmail("arthur.tabira@gmail");     
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Email invalido!>", e.getMessage());
		}
		
		try {
			umaPessoa.setEmail("@hotmail.com.brs");     
			Assert.fail();
		}
		
		catch (Exception e) {
			Assert.assertEquals("\n\t<Email invalido!>", e.getMessage());
		}		
	}
	
	@Test public void testaOutros(){
		try{
			Endereco end = new Endereco();
			end.setEstado(UF.PB);
			end.setCidade("Campina Grande");
			end.setBairro("Bodocongo");
			end.setTipoDeLogradouro(TipoDeLogradouro.Rua);
			end.setLogradouro("Aprigio Veloso");
			end.setNumero(10);
			end.setCep("58000-000");
			end.setObs("");
			
			Pessoa pessoa = new  Pessoa();
			pessoa.setNome("arthur tabira");
			pessoa.setTelefone("(83) 99997845");
			pessoa.setEmail("arthur@gmail.com");
			pessoa.setEndereco(end);
			Pessoa pessoa2 = new  Pessoa();
			pessoa2.setNome("arthur tabira II");
			pessoa2.setTelefone("(83) 99997845");
			pessoa2.setEmail("arthur2@gmail.com");
			pessoa2.setEndereco(end);
			
			Assert.assertTrue(pessoa.equals(pessoa));
			
			Assert.assertFalse(pessoa.equals(pessoa2));
		
		}
		
		catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
}

















